package com.demo.service.system;

import java.util.List;

import com.demo.dto.Pager;
import com.demo.exception.ServiceLayerException;
import com.demo.model.system.Resource;
import com.demo.model.system.ResourceExample;

public interface ResourceService {
	/**
	 * 添加一个资源
	 * @param record
	 * @return
	 * @throws ServiceLayerException 
	 */
	int add(Resource record) throws ServiceLayerException;
	
	/**
	 * 批量添加资源
	 * @param record
	 * @return
	 * @throws ServiceLayerException 
	 */	
	int addBatch(List<Resource> records) throws ServiceLayerException;
	
	/**
	 * 批量删除资源
	 * @param record
	 * @return
	 */	
	int deleteBatch(List<Integer> ids);

	/**
	 * 修改单个资源信息
	 * @param record
	 * @return
	 * @throws ServiceLayerException 
	 */
	int update(Resource record) throws ServiceLayerException;

	/**
	 * 批量启用资源
	 * @param ids
	 * @return
	 * @throws ServiceLayerException 
	 */
	int enable(List<Integer> ids) throws ServiceLayerException;

	/**
	 * 批量停用资源
	 * @param ids
	 * @return
	 * @throws ServiceLayerException 
	 */
	int disable(List<Integer> ids) throws ServiceLayerException;
	
	/**
	 * 根据主键查询单条资源记录
	 * @param id
	 * @return
	 * @throws ServiceLayerException 
	 */
	Resource getById(Integer id) throws ServiceLayerException;
	
	/**
	 * 查询符合条件的资源记录列表
	 * @param example
	 * @return
	 */
	List<Resource> findByCondition(ResourceExample example);
	
	/**
	 * 分页查询符合条件的资源记录列表
	 * @param example
	 * @param pager
	 * @return
	 * @throws ServiceLayerException 
	 */
	Pager<Resource> findByPage(ResourceExample example, Pager<Resource> pager) throws ServiceLayerException;

	/**
	 * 查询符合条件的资源记录的数量
	 * @param example
	 * @return
	 */
	int getCount(ResourceExample example);
	
	/**
	 * 分页级联查询符合条件的资源记录列表
	 * @param example
	 * @param pager
	 * @return
	 */
	Pager<Resource> findByPageCascade(ResourceExample example, Pager<Resource> pager);
	
	/**
	 * 级联查询符合条件的资源记录列表
	 * @param example
	 * @return
	 */
	List<Resource> findByConditionCascade(ResourceExample example);
}
